%include	'Macros.inc'
;
;	������� ���� ���������
;	-----------------------------------------
;
	absolute	80h		;��������� ���� ����� �����-�������� 80h
Lparam	resb	1			;����� ������ �������
Param	resb	1			;������ ���� ������
	segment data			;����������� ������� ������
	segment stack			;����������� ������� �����
	times	64	db	0
	segment	code			;����������� ������� ����
..start:
	extern	Sector
        extern	Address
	extern	Pf
	extern	Lname0
	extern	Lname
	extern	Namefile
	extern	Lognum
	extern	Lf
	extern	Segin
	extern	B
	extern	Nt

	mov	ax,data			;"��������" ������������ �������� ������
	mov	es,ax			; � �������������� ������� ������ 
	mov	ax,ds			;����������� � Segin ������
	mov	[es:Segin],ax		; ���������
        mov	ax,code			;"��������" ������������ �������� ����
	mov	ds,ax                   ; � �������� ������� ������ 
 	call	Clear_screen		;������� ������
        mov	ax,[es:Segin]           ;"��������" ������������ �������� absolute
	mov	ds,ax                   ; � �������� ������� ������ 
	xor	cx,cx			;��������� CX
	mov	cl,[Lparam]		;CL <- ����� ������
	cmp	cx,0			;����� �����������?
	jz	.M2                     ;��
	dec	cx			;������� ������ � ����� �����(��������)
        mov	[es:Lname],cx           ;�������� � Lname ����� ����� �����
	xor	si,si
	mov	bx,1
.Next:	mov	ax,[Param+bx]           ;���������� ��� �����
	mov	[es:Namefile+si],ax	; � Namefile
	inc	si
	inc	bx
	loop	.Next
        mov	ax,code			;"��������" ������������ �������� ����
	mov	ds,ax                   ; � �������� ������� ������ 
	xor	bx,bx			;BX <- 0
	mov	bl,[es:Lname]		;BX <- ����� ����� �����
	mov	[es:Namefile+bx],byte 0	;������ �������� �����
	push	ds
	mov	ax,data                 ;"��������" ������������ �������� ������
	mov	ds,ax                   ; � �������� ������� ������ 
	xor	ax,ax
	mov	ah,3dh			;��������
	mov	dx,Namefile		; ��������������
	mov	al,2			; �����
	int	21h			; �� ������ � ��� ������
	pop	ds
	jnc	.M1			;���� �������
	Out_str	ErrorOpenFile		;��������� �� ������ �������� �����
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M1:	mov	[es:Lognum],ax		;���������� �����. ������ �����
	xor	cx,cx			;�������� ����������� ���������
	xor	dx,dx			; ����� - 0
	mov	bx,[es:Lognum]		;���������
	mov	al,2			; ���������
	mov	ah,42h			; �� �����
	int	21h			; �����
	add	ax,255			;����� ������� ����� ����� � 255
	adc	dx,0			;����� ������� ����� ����� � (CF)
	mov	bx,256			;BX <- ����� �������
	div	bx			;������� (DX:AX) �� BX
	mov	[es:Lf],ax		;Lf <- ����� ����� � �������
	Out_str	MsgFileLength		;��������� � ����� �����
	mov	dx,[es:Lf]		;DX <- ����� ������ ���������
	call	Write_word_dec		;����� ������ �� �����
	call	Read_byte		;���� �������
	mov	[es:Pf],byte 1		;Pf <- 1
.M2:	mov	ax,code			;"��������" ������������ �������� ����
	mov	ds,ax                   ; � �������� ������� ������ 
	call	Dispatcher		;����� ����������
.Exit:	mov	ax,4c00h
	int	21h			;������� � DOS
ErrorOpenFile	 db 'Error open file $'
MsgFileLength	 db 'File length, in sectors of 256 bytes, is $'
%include	'Dispatch.asm'		;������������� ��������
%include	'Disp_sec.asm'		; -"-
%include	'Edit_sec.asm'		; -"-
